package com.lanou3g.code0412;

import java.util.ArrayList;

/**
 * Created by dllo on 18/4/12.
 */
public class Main {
    public static void main(String[] args) {
        ArrayList<String> arrayList = new ArrayList<>();
        for (char c = 'a';c <= 'z';c++){
            String s = String.valueOf(c);
            arrayList.add(s);
        }

        String ss = arrayList.get(arrayList.size()-1);
        System.out.println(ss);

        //调用:
        String b = (String) getLastOne(arrayList); //不加泛型需要强转

        String cc = getLastOne(new ArrayList<>());


    }

    /*
    * 泛型可以在方法上进行声明,我们管声明了泛型的方法,叫做:泛型方法
    * 语法:在方法的返回值前 使用 <>来声明泛型,然后在这个方法中都可以使用该泛型
    * 与泛型类不同,在调用一个泛型方法时,不需要特殊的操作
    *
    * */
    //要想在main方法中调用,需加static....在static中只能调用static 类型的方法
    public static <T> T getLastOne(ArrayList<T> arrayList){   //ArrayList类型和方法返回值类型一致
        if (arrayList == null){
            return null;
        }
        if (arrayList.size() == 0){
            return null;
        }

        T t = arrayList.get(arrayList.size() -1);
        return t;

    }
    //泛型方法与static 没有关系
    public static <T> void fun(T t){  //传任何类型 都可以. 比泛类型更灵活 (泛类型需要定义类型)


    }

}
